找不到好看的資料結構圖硬是自己做了一張(前端工程師強迫症)
在台灣當前端工程師七年後來到美國矽谷。以往的面試經驗都是看作品集然後問一些實務經驗,自認為實務經驗不算差,但沒想到來到國外後連第一關電話面試都過不了。(自信心大受打擊!完全從零開始啊)
原來美國不管你的經驗多豐富,第一步一定會考演算法跟資料結構!
演算法?? 不是 CS (Computer Science) 科系畢業的我,連演算法是什麼也一頭霧水。工作這麼久根本就沒用過什麼演算法,也沒想過什麼最佳解,還是可以完成專案啊!很不懂為什麼需要學,但為了找工作需要還是硬著頭皮開始刷演算法題庫。
最有名的演算法刷題網站就是 LeetCode 了。各大公司幾乎都會考裡面的題目,這邊的軟體工程師找工作前也一定都會到 LeetCode 上面刷題練功。
讓我相當意外的是,這次鐵人賽寫演算法/資料結構的人超多!!代表大家越來越看重,也不難預期未來台灣公司面試會考 LeetCode 了。 (前端真辛苦 T__T)
下圖表是世界各地用 LeetCode 的國家比例,雖然也是有 LintCode 等等其他有名刷題網站但比例跟下圖表差異不大。台灣竟然有佔到 3% 以上( 拍手!! )
本來以為背一下題庫解答就好,但事實是當我寫了第一題,不但花超過一個小時還寫不出來,最慘的是參考別人解答時,我根本不知道他在寫什麼...
a + b = (a ^ b) + (a & b) << 1 // ???
這時萌生應該要先把概念學好,刷題時才不會這麼痛苦。
演算法普遍給人印象都很硬看不懂,查找網路上資料後,發現這真的是事實,而且絕大多數分享文使用語言都不是 javaScript。所以這一系列會盡量用圖文以及日常生活例子,讓自己跟大家都好理解。
完全跟軟體無相關科系畢業,非常非常喜歡前端這個工作 (這行大家都喜歡分享也熱情投入),這三年專精在寫 JS, 覺得寫邏輯比切版有趣太多。
現在叫我要做網站出來並不是什麼難的事,但寫出效能佳、好維護的網站就是挑戰了。總覺得演算法是成為資深工程師的必要技能之一,他對於寫程式的邏輯與思路非常有幫助。另一方面 LeetCode 只能用原生 javaScript 撰寫,讓平常使用太多前端框架跟 library 的我可以重新複習核心 javaScript 觀念。
這條演算法學習路上對我自己而言並不容易 (跟平常開發專案真的南轅北轍),希望可以鼓勵不是本科系的也能夠會的 !
什麼是演算法, Big O 是什麼等等
介紹常見的 Data Structure 例如 linked list、Array、Queue、Stack... 搭配 LeetCode 題目。 # 代表對應的 LeetCode 第幾題,之後鐵人賽結束會慢慢把解 LeetCode 思考過程筆記在 gitbook (2019/10 更新,題目 + 解題圖片已經全部更新在 gitbook 上了,應該會一直陸續增加直到找到理想工作為止 XD )
介紹常見排序,Binary search、Two pointer... 以及 LeetCode 解題
介紹一些有趣題目以及面試經驗
以下是鐵人賽結束但持續寫的相關文章
前端比較少用到像 tree、graph 這種演算法 (然後這對我來說也是太進階了,所以文章裡就不討論囉)
如有錯誤或需要改進的地方,拜託跟我說。
我會以最快速度修改,感謝您
也歡迎追蹤我的部落格,除了技術文也會分享一些在矽谷工作的甘苦。
期待您的文章,我也是非CS想跨入這行業的人XD。但是資料結構跟演算法都沒學過
感謝鼓勵 ~~ 讓我有動力繼續撐下去
我是雖然學過,但還是跟演算法還不熟但想學好演算法的人!
追隨您的腳步 ,希望可以進步 XD
我也是XDD gogo!
一起進步 ~~
唉呀,我本來也想選這題目的
可惜太常加班,只能放棄開賽了
希望你可以堅持到底 ~~ XD
我會加油的! 都超過一半了
你好最近小弟想自學JavaScript可以分享學習過程嗎?另外可以分享學習資源嗎?謝謝
我覺得鐵人賽很多很棒的文章,像 Kuro 重新認識 javaScript 我自己就很受用,當然不只他的文章啦.很多都很不錯